package com.space.school.controller;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

@WebServlet(name = "CheckCodeServlet",value = "/CheckCodeServlet")
public class CheckCodeServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        服务器通知浏览器不要缓存
        resp.setHeader("pragma","no-cache");
        resp.setHeader("cache-control","no-cache");
        resp.setDateHeader("Expires", 0);
        //    创建一个图片 长80 高30 的图片 默认是黑色背景
        int width = 80;
        int height = 30;
//    生成图片
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//    获取画笔
        Graphics g = image.getGraphics();
//    画笔颜色 灰色
        g.setColor(Color.GRAY);
//        填充颜色
        g.fillRect(0, 0, width, height);
//        产生4位数随机验证码
        String checkCode=getCheckCode();
//        将验证码放入Session中
        req.getSession().setAttribute("checkCode",checkCode);
//        将画笔设为黄色
        g.setColor(Color.yellow);
//        设置字体大小
        g.setFont(new Font("黑体",Font.BOLD,24));
//        向图片写入验证码
        g.drawString(checkCode,15,25);
//        将内存中的图片输出到浏览器中
//        参数1 图片对象
//        参数2 图片格式
//        参数3 图片输出位置
        ImageIO.write(image,"png",resp.getOutputStream());
    }

    private String getCheckCode() {
        Random random=new Random();
        int i=0;
        int num;
        StringBuilder sb=new StringBuilder();
        while (i<4){
            num=random.nextInt(75)+48;
            if(num<58 || (num>65 && num<90) || num>97){
                char c=(char)num;
                sb.append(c);
                i++;
            }
        }
        return sb.toString();
    }
}